package com.punai.customer.mapper;

import com.punai.common.core.mapper.CommonMapper;
import com.punai.customer.domain.CusGxLinkGk;
import com.punai.gk.domain.vo.SimplifyVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 标准费用项关联归口Mapper接口
 *
 * @author zhx
 * @date 2023-03-28
 */
public interface CusGxLinkGkMapper extends CommonMapper<CusGxLinkGk>
{
    /**
     * 查询标准费用项关联归口
     *
     * @param id 标准费用项关联归口主键
     * @return 标准费用项关联归口
     */
    public CusGxLinkGk selectCusGxLinkGkById(@Param("id")String id, @Param("companyId") Long companyId);

    /**
     * 查询标准费用项关联归口列表
     *
     * @param cusGxLinkGk 标准费用项关联归口
     * @return 标准费用项关联归口集合
     */
    public List<CusGxLinkGk> selectCusGxLinkGkList(CusGxLinkGk cusGxLinkGk);


    /**
     * 删除标准费用项关联归口
     *
     * @param id 标准费用项关联归口主键
     * @return 结果
     */
    public int deleteCusGxLinkGkById(@Param("id") String id, @Param("companyId") Long companyId);

    /**
     * 批量删除标准费用项关联归口
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCusGxLinkGkByIds(String[] ids);

    public List<CusGxLinkGk> selectCusGxLinkGkFeeList(@Param("code")String code,@Param("name")String name, @Param("chapterIds") List<String> chapterIds, @Param("companyId") Long companyId);

    public List<CusGxLinkGk> selectCusGxLinkGkFeatureList(@Param("gxId")String gxId, @Param("companyId") Long companyId);

    public int updateFeatureStateIsZero(@Param("gxId")String gxId, @Param("companyId") Long companyId);

    public int updateFeatureStateIsOne(@Param("gxId")String gxId, @Param("companyId") Long companyId);

    Integer getMaxOrderNumByGxId(@Param("gxId") String gxId,@Param("companyId")Long companyId);

    int selectCountByFeatureItem(@Param("gxId") String gxId,@Param("companyId")Long companyId,@Param("featureItem") String featureItem);

    Integer checkFeatureDescribe(@Param("companyId")Long companyId,@Param("gxId") String gxId, @Param("featureId") String featureId);

    List<SimplifyVo> getHistoryGx(@Param("companyId") Long companyId, @Param("specId") String specId, @Param("gkType") String gkType);

    public String selectGxIdById(@Param("id") String id, @Param("companyId") Long companyId);

    Integer updateGkItemById(@Param("id") String id,@Param("companyId") Long companyId, @Param("gkType") String gkType, @Param("gkId") String gkId);

    Integer updateGkItemByGxIds(@Param("companyId") Long companyId, @Param("gxIds") Set<String> gxIds, @Param("gkType") String gkType, @Param("gkId") String gkId);

    Integer updateGkItemBySpecId(@Param("companyId") Long companyId,@Param("specId") String specId,@Param("gkType") String gkType,@Param("gkId") String gkId);

    List<String> selectGxIdByGxIds(@Param("companyId") Long companyId, @Param("gxIds") List<String> gxIds);

    Integer insertByGxIds(@Param("companyId") Long companyId,@Param("specId") String specId,@Param("type") String type,@Param("gxIds") List<String> gxIds,@Param("gkItem") String gkItem,@Param("createBy") String createBy);

    Integer insertBySpecId(@Param("companyId") Long companyId,@Param("specId") String specId,@Param("type") String type,@Param("gkItem") String gkItem,@Param("createBy") String createBy);
    Integer clearFCC(@Param("gxId") String gxId,@Param("companyId") Long companyId);
}
